1 using System;
2 using
System.Collections.Generic;
3 using
UnityEngine;
4
5
6 namespace
UnityStandardAssets.CrossPlatformInput
7 {
8     
public abstract class VirtualInput
9     {
10         
public Vector3 virtualMousePosition { get; private set; }
11         
12         
13         
protected Dictionary<string, CrossPlatformInputManager.VirtualAxis> m_VirtualAxes =
14             
new Dictionary<string, CrossPlatformInputManager.VirtualAxis>();
15             
// Dictionary to store the name relating to the virtual axes
16         
protected Dictionary<string, CrossPlatformInputManager.VirtualButton> m_VirtualButtons =
17             
new Dictionary<string, CrossPlatformInputManager.VirtualButton>();
18         
protected List<string> m_AlwaysUseVirtual = new List<string>();
19             
// list of the axis and button names that have been flagged to always use a virtual axis or button
20         
21
22         
public bool AxisExists(string name)
23         {
24             
return m_VirtualAxes.ContainsKey(name);
25         }
26
27         
public bool ButtonExists(string name)
28         {
29             
return m_VirtualButtons.ContainsKey(name);
30         }
31
32
33         
public void RegisterVirtualAxis(CrossPlatformInputManager.VirtualAxis axis)
34         {
35             
// check if we already have an axis with that name and log and error if we do
36             
if (m_VirtualAxes.ContainsKey(axis.name))
37             {
38                 Debug.LogError(
"There is already a virtual axis named " + axis.name + " registered.");
39             }
40             
else
41             {
42                 
// add any new axes
43                 m_VirtualAxes.Add(axis.name, axis);
44
45                 
// if we dont want to match with the input manager setting then revert to always using virtual
46                 
if (!axis.matchWithInputManager)
47                 {
48                     m_AlwaysUseVirtual.Add(axis.name);
49                 }
50             }
51         }
52
53
54         
public void RegisterVirtualButton(CrossPlatformInputManager.VirtualButton button)
55         {
56             
// check if already have a buttin with that name and log an error if we do
57             
if (m_VirtualButtons.ContainsKey(button.name))
58             {
59                 Debug.LogError(
"There is already a virtual button named " + button.name + " registered.");
60             }
61             
else
62             {
63                 
// add any new buttons
64                 m_VirtualButtons.Add(button.name, button);
65
66                 
// if we dont want to match to the input manager then always use a virtual axis
67                 
if (!button.matchWithInputManager)
68                 {
69                     m_AlwaysUseVirtual.Add(button.name);
70                 }
71             }
72         }
73
74
75         
public void UnRegisterVirtualAxis(string name)
76         {
77             
// if we have an axis with that name then remove it from our dictionary of registered axes
78             
if (m_VirtualAxes.ContainsKey(name))
79             {
80                 m_VirtualAxes.Remove(name);
81             }
82         }
83
84
85         
public void UnRegisterVirtualButton(string name)
86         {
87             
// if we have a button with this name then remove it from our dictionary of registered buttons
88             
if (m_VirtualButtons.ContainsKey(name))
89             {
90                 m_VirtualButtons.Remove(name);
91             }
92         }
93
94
95         
// returns a reference to a named virtual axis if it exists otherwise null
96         
public CrossPlatformInputManager.VirtualAxis VirtualAxisReference(string name)
97         {
98             
return m_VirtualAxes.ContainsKey(name) ? m_VirtualAxes[name] : null;
99         }
100
101
102         
public void SetVirtualMousePositionX(float f)
103         {
104             virtualMousePosition =
new Vector3(f, virtualMousePosition.y, virtualMousePosition.z);
105         }
106
107
108         
public void SetVirtualMousePositionY(float f)
109         {
110             virtualMousePosition =
new Vector3(virtualMousePosition.x, f, virtualMousePosition.z);
111         }
112
113
114         
public void SetVirtualMousePositionZ(float f)
115         {
116             virtualMousePosition =
new Vector3(virtualMousePosition.x, virtualMousePosition.y, f);
117         }
118
119
120         
public abstract float GetAxis(string name, bool raw);
121         
122         
public abstract bool GetButton(string name);
123         
public abstract bool GetButtonDown(string name);
124         
public abstract bool GetButtonUp(string name);
125
126         
public abstract void SetButtonDown(string name);
127         
public abstract void SetButtonUp(string name);
128         
public abstract void SetAxisPositive(string name);
129         
public abstract void SetAxisNegative(string name);
130         
public abstract void SetAxisZero(string name);
131         
public abstract void SetAxis(string name, float value);
132         
public abstract Vector3 MousePosition();
133     }
134 }


Gõ tìm kiếm nhanh...